Typedef与位运算[C语言]

Typedef


Typedef

用typedef定义新类型名

在编程中可以用typedef来定义新的类型名来代替已有的类型名

格式:

​ typedef 已有类型名 新的类型名

如:
typedef int INTEGER;

以后在定义变量时int和INTEGER是等价的。

INTEGER a[10],b; int a[10],b;

Typedef 已有类型名 新的类型名;

  1. typedef可用于定义各种类型名,但不能定义变量。即只要见到typedef则该语句最后的标识符必定是一个类型名而不是变量名。
  2. typedef只能对已经存在的类型新增一个别名,而不是创造新类型。即在typedef后必须是一个已有的类型。

位运算

位运算

位运算的操作对象只能是整型或字符型数据。

  • C语言提供六种位运算符:

& | ^ ~ << >>

  • 复合赋值运算符

&= , |= , ^=, <<=, >>=

[ & ]: 两个相应的二进制位都是1时,它们按位运算后的结果才为1,否则为0。

1
2
3
4
5
1&1 = 1
1&0 = 0
0&1 = 0
0&0 = 0
1&1 = 1
1&0 = 0
0&1 = 0
0&0 = 0
//作用:清零

[ | ]: 两个相应的二进制位只要有一个为1,则它们按位或运算后结果为1。

1
2
3
4
5
1|1 = 1
1|0 = 1
0|1 = 1
0|0 = 0
1|1 = 1
1|0 = 1
0|1 = 1
0|0 = 0
//作用:将特定位置1

[ ^ ]: 当两个相应位同为1或同为0时,按位异或运算结果为0;两个相应位一个为1另一个为0时,按位异或运算结果为1.

1
2
3
4
1^1 = 0
1^0 = 1
0^1 = 1
0^0 = 1^1 = 0
1^0 = 1
0^1 = 1
0^0 = 0

[ ~ ]: 按位取反运算符是一个单目运算符。按位取反后0变1,1变0。

注:

对一个数按位取反得到的值为该数+1后再乘以-1。

[ << ]: 两个相应的二进制位都是1时,它们按位运算后的结果才为1,否则为0。

格式:数 << n

功能:将二进制位按位依序左移n位。

对一个十进制数左移n位后得到的值为该数乘以2的n次方的积。

[ >> ]: 数 >> n

功能:将二进制位按位依序右移n位

若该数为一个负数并且不能被2的n次方整除则得到的数为商加-1。

(拿到表达式先看是否合法,如果合法在进行运算)